分享好友 技术首页 技术分类 切换频道

地址映射原理及实现:

2020-07-19 15:27110
地址映射

为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射

地址映射原理及实现:
1、 地址映射结构
在TornadotargethvmLib.h文件中
typedef struct phys_mem_desc
    {
    void *virtualAddr;
    void *physicalAddr;
    UINT len;
    UINT initialStateMask;      /* mask parameter to vmStateSet */
    UINT initialState;          /* state parameter to vmStateSet */
} PHYS_MEM_DESC;

virtualAddr:你要映射的虚拟地址
physicalAddr:硬件设计时定义的实际物理地址
len;要进行映射的地址长度
initialStateMask:可以初始化的地址状态:
有如下状态:
#define VM_STATE_MASK_VALID                     0x03
#define VM_STATE_MASK_WRITABLE                 0x0c
#define VM_STATE_MASK_CACHEABLE               0x30
#define VM_STATE_MASK_MEM_COHERENCY        0x40
#define VM_STATE_MASK_GUARDED                     0x80
不同的CPU芯片类型还有其特殊状态

initialState:实际初始化的地址状态:
有如下状态:
#define VM_STATE_VALID                           0x01
#define VM_STATE_VALID_NOT                      0x00
#define VM_STATE_WRITABLE                       0x04
#define VM_STATE_WRITABLE_NOT                  0x00
#define VM_STATE_CACHEABLE                        0x10
#define VM_STATE_CACHEABLE_NOT              0x00
同样不同的CPU芯片类型还有其特殊状态

2、 初始化结构
在 Tornadotargetconfigads860sysLib.c 文件中:
PHYS_MEM_DESC sysPhysMemDesc [] =
{
  {
  (void *) LOCAL_MEM_LOCAL_ADRS,
  (void *) LOCAL_MEM_LOCAL_ADRS,
  LOCAL_MEM_SIZE ,
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
VM_STATE_MASK_CACHEABLE,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE
  },
  {
(void *) BCSR0,
  (void *) BCSR0,
  0x00001000,                         /* 4 k - Board Control and Status */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
VM_STATE_MASK_CACHEABLE | VM_STATE_MASK_GUARDED,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT |
VM_STATE_GUARDED
  },
            ……
  {
  (void *) INTERNAL_MEM_MAP_ADDR,
  (void *) INTERNAL_MEM_MAP_ADDR,
  INTERNAL_MEM_MAP_SIZE,           /* 64 k - Internal Memory Map */
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
VM_STATE_MASK_CACHEABLE | VM_STATE_MASK_GUARDED,
  VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT |
       VM_STATE_GUARDED
  },
  {
  (void *) ROM_BASE_ADRS,
  (void *) ROM_BASE_ADRS,
  ROM_SIZE,                         /* Flach memory */   
  VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE |
VM_STATE_MASK_CACHEABLE ,
VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT
  }
};
上面结构中缺省地址映射
3、 地址初始化
在Tornadotargetsrcconfig usrMmuInit.c 文件中
通过函数usrMmuInit使地址映射生效

4、 实现映射:
如你定义flash地址为0x04000000开始的8Mbyte地址,则可以如下进行地址映射
    {
    (void *) 0x04000000,
    (void *) 0x04000000,
    0x00800000,                          /* 8 m - Flash window 1 */
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE,
    VM_STATE_VALID | VM_STATE_WRITABLE
},

5、 注意
地址映射zui小单位为1页,4K大小,所以len值zui小为:0x00001000。
 

免责声明:矿库网文章内容来源于网络,为了传递信息,我们转载部分内容,尊重原作者的版权。所有转载文章仅用于学习和交流之目的,并非商业用途。如有侵权,请及时联系我们删除。感谢您的理解与支持。

点赞 0
举报
收藏 0
评论 0
分享 0
麦格理:预计镍市至少在2027年前处于过剩状态
外电5月31日消息,麦格理(Macquarie)的一位分析师表示,随着印尼产量迅速增加,预计全球镍市场每年都面临供应过剩,至少持续至2027年。    近年来,由于印尼拥有丰富镍资源且该国鼓励国内加工,镍产量快速增长。镍用于制造不锈钢和电动汽车(EV)电池。  麦格理分析师Jim Lennon提供的数据显示,今年镍市场可能出现14.2

0评论2023-06-01249

矿石中元素的赋存状态
矿石和选矿产品中元素的赋存状态是工艺矿物学研究的基本任务之一 。元素在矿石中的赋存形式与其自身的晶体化学性质及其形成时的物理、 化学条件有关。元素的赋存状态包含两个含义: 即元素的赋存和元素的状态两个方面。元素的赋存就是矿石

0评论2020-12-1921603

露天采矿设备检修技术探析
引言随着现代科技的快速发展,煤矿机械设备技术水平不断提升,大型采矿设备也面临越来越严格的作业要求,合理组织生产与维修工作,及时检出设备故障问题,控制设备维修成本并提高其使用效率是煤矿生产经营者所追逐的最大目标。同时,国

0评论2020-07-21836

电动闭门器安装使用和供电标准要求都有哪些?
  电动闭门器在使用的过程当中平时是不需要用电,因为要对防火门进行实时的开启关闭控制,工作原理就是通过控制指令进行相应的指令释放,产生力矩,在现代各个行业当中尤其是高层建筑以及一些公共场所,对于防火门的使用比较普遍,所以

0评论2020-07-21664

碳当量分析仪,碳分析仪
碳当量分析仪,碳分析仪碳的测定碳是钢铁中基本元素之一。含碳量的高低是区别钢和铁的依据。一般含碳量<1.7%时称为钢,含碳量>1.7%时则为铁。纯铁属于钢的范畴,称为极软钢。碳在钢铁中呈化合状态和游离状态。碳当量分析仪,碳分析仪钢

0评论2020-07-20283

压力传感器的工作原理和工作状态
经营:压力控制器,流量开关,水流量开关,流量控制器,压差开关,压力开关压力传感器是工业实践中zui为常用的一种传感器,而我们通常使用的压力传感器主要是利用压电效应制造而成的,这样的传感器也称为压电传感器。我们知道,晶体是各向异性

0评论2020-07-1955

DP系列导阀型隔膜式减压阀

0评论2020-07-1914

YAMATAKE HP100-A1

0评论2020-07-1928